package com.eastmoney.emis.edda.infrastructure.hsbc.dto;

import com.eastmoney.emis.edda.infrastructure.hsbc.annotation.HsbcEncrypt;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import net.bytebuddy.utility.RandomString;

/**
 * @description: Description
 * @projectName: EDDA-HSBC
 * @package: com.eastmoney.emis.edda.infrastructure.dto
 * @author: 汪程程
 * @date: 2022/9/27 2:05 PM
 * @version: 1.0
 */
@HsbcEncrypt
@JsonInclude(JsonInclude.Include.NON_NULL)
public class InstructionReq {

    /**
     * Merchant Instruction Reference No. Unique instruction id generated by merchant
     */
    public String MerchantInstructionIdentification;
    /**
     * DDA Reference No.
     * Note: This is HSBC assigned unique reference number for the DDA.
     * Mutually exclusive with field DebtorName, DebtorAccount and CreditorReference. This field is mandatory if those 3 fields are not provided.
     */
    public String MandateIdentification;

    /**
     * 	Debtor account owner name.
     * Mutually exclusive with MandateIdentification. Field DebtorName, DebtorAccount and CreditorReference are mandatory if field MandateIdentification is not provided.
     * Note: Empty string or leading trailing space are not allowed.
     */
    public String DebtorName;

    /**
     * Debtor Account Detail.
     * Mutually exclusive with MandateIdentification. Field DebtorName, DebtorAccount and CreditorReference are mandatory if field MandateIdentification is not provided.
     */
    public AccountDto DebtorAccount;

    public AccountDto CreditorAccount;

    public String CreditorReference;

    /**
     * 	Instructed amount currency. Note: Support HKD only
     */
    public String InstructedAmountCurrency;

    /**
     * 	Instructed amount
     */
    public String InstructedAmount;

    /**
     * 	Remittance information from payer
     */
    //public String RemittanceInformation = null;

    /**
     * 	User preferred language. This language will be used in SMS for communication
     */
    public String SmsLanguageCode;

    public InstructionReq() {
        this.InstructedAmountCurrency = "HKD";
        this.SmsLanguageCode = "eng";
    }

}
